// 自定义统计指定目录大小的函数
// 为什么需要定义此函数，原因是我们没有直接获取目录大小的方法。

// 导入文件系统模块
const fs = require("fs");

/**
 * 自定义目录大小统计的函数
 * @param {String} dir 被统计目录名称
 * @return {Number} 返回目录的大小
 */
function dirSize(dir){
    let total = 0; // 声明一个用于存放统计文件大小的变量
    // 读取当前指定的目录，获取里面的所有文件
    const files = fs.readdirSync(dir);
    // 遍历目录中的所有文件
    for (let f of files){
        // 为每个文件拼接完成访问路径
        let file = dir + "/" + f; 
        // 获取当前文件file的信息
        const stats = fs.statSync(file); 
        // 判断当前文件是否是一个目录
        if(stats.isDirectory()){
            // 递归式调用自己统计子目录大小
            total += dirSize(file);
        }
        // 判断当前文件是否是一个文件
        if(stats.isFile()){
            // 获取当前文件大小，并累计到total变量中
            total += stats.size;
        } 
    }
    // 返回累加结果
    return total;
}

// 测试
//console.log(dirSize("./mydir"));
console.log(dirSize("./aa"));




// 获取文件大小 可以
// 获取目录大小 永远都是0
// console.log(fs.statSync("./mydir/b.txt").size); // 82
// console.log(fs.statSync("./mydir/").size); // 0

